package com.dl.exam.mapper;

import com.dl.exam.entity.Exam;
import com.dl.exam.entity.question.Question;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author DL
 * @create 2022-04-21 16:44
 */
public interface ExamMapper {

    /**
     * 开始考试时，添加本次考试的信息 exam_manage
     * @param examId 本次考试的id
     * @param userId 用户id
     * @param examType 考试类型
     * @return 受影响的行数
     */
    Integer insertExamManage(@Param("examId") String examId, @Param("userId") String userId, @Param("examType") Integer examType);

    /**
     * 开始考试时，添加本次考试的试题 exam_info
     * @param examId 本次考试的id
     * @param questionIdList 试题id
     * @return 受影响的行数
     */
    Integer insertExamInfo(@Param("examId") String examId, @Param("questionIdList") List<String> questionIdList);

    /**
     * 交卷时更新考试管理表的信息
     * @param examId 考试id
     * @param score 分数
     * @param totalScore 总分
     * @return 受影响的行数
     */
    Integer updateExamManage(@Param("examId") String examId, @Param("score") float score, @Param("totalScore") float totalScore);

    /**
     * 交卷时更新考试信息中的试题答案
     * @param examId 考试id
     * @param answerList questionId,answer
     * @return 受影响的行数
     */
    Integer updateExamAnswer(@Param("examId") String examId, @Param("answerList") List<Question> answerList);

    /**
     * 根据 用户id 查询未完成的考试（最后一场）
     * @param userId 用户id
     * @return 试题信息
     */
    Exam queryUnfinishedExam(String userId);

    /**
     * 查询已完成的考试信息和答案
     * @param examId 考试id
     * @param examType 考试类型
     * @return 考试信息和答案
     */
    List<Question> queryFinishedExam(String examId, Integer examType);

    /**
     * 根据用户id 查询所有历史考试
     * @param userId 用户id
     * @return 考试信息，带分页
     */
    List<Exam> queryAllExam(@Param("userId") String userId);


}
